package br.com.negocio;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.pessoa.Pessoa;
import br.com.util.HibernateUtil;

public class PessoaService {

	public void salvar(Pessoa pessoa){
		
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		session.saveOrUpdate(pessoa);
		tx.commit();
		session.close();
	}
	
	public ArrayList<Pessoa> listarTodos(){
		Session session = HibernateUtil.getSession();
		List list = session.createQuery("from Pessoa").list();
		return (ArrayList<Pessoa>) list;
		
	}
	
	public void excluir(Pessoa pessoa){
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		session.delete(pessoa);
		tx.commit();
		session.close();
	}
	
	public Pessoa pesquisarPorId(int codigo) {
		Session session = HibernateUtil.getSession();
		try {
			return (Pessoa) session.get(Pessoa.class, codigo);
		} finally {
			session.close();
		}
	}
	
	public ArrayList<Pessoa> consultaLike(String nome){
		Session session = HibernateUtil.getSession();
		
		
		List list = session.createQuery("from Pessoa p WHERE p.nome like :desc").setParameter("desc", "%" +  nome + "%").list();
		
		return (ArrayList<Pessoa>) list;
		
	}
	
	public Pessoa autenticar(String logIn, String senha){
		Session session = HibernateUtil.getSession();
		
		Pessoa p = (Pessoa) session.createQuery("from Pessoa p WHERE p.logIn = :login and senha = :senha and tipo = 'funcionario'").setParameter("login", logIn).setParameter("senha", senha).uniqueResult();	
		return p;
		
	}
	
	
}
